package com.zy.io;

import java.io.*;

/**
 * @Author Gong
 * @Description
 * @dATE 2021/12/9 16:14
 **/
public class Test {
    public static void main(String[] args) throws IOException {
//        String source = "D:/temp/wq/aaa/dir2/Gitee.png";
//
//        String dest = "D:/temp/wq/aaa/dir3/Gitee_copy.png";
//        copyFile(source,dest);
        Test t = new Test();
        File  sourceFile = new File("D:\\temp\\test.jpg");
        File destFile = new File("D:\\temp\\test-1.jpg");

        String destFilex = destFile.getAbsolutePath();

        t.copyFile(sourceFile,destFile);

        System.out.println("复制完毕。");
    }

    public void dir(File sourceFile, File dest){
        if(sourceFile.exists()){

            if(sourceFile.isFile()){
                System.out.println("file:"+sourceFile.getAbsolutePath());

            }else{
                System.out.println("dir:"+sourceFile.getAbsolutePath());
                File[] files = sourceFile.listFiles();
                if(null != files){
                    for (int i = 0; i < files.length; i++) {
                        dir(files[i],null);
                    }
                }
            }
        }

    }

    /**
     * @Author GongXL
     * @Description  复制文件
     * @Date 17:15 2021/12/9
     * @Param [java.lang.String, java.lang.String]
     * @return void
     **/
    public  void copyFile(File sourceFile,File destFile) throws IOException {
        //1.source对应的file
        if(sourceFile.exists()){
            //2.读取source的文件字节流
            BufferedInputStream bfr = new BufferedInputStream(new FileInputStream(sourceFile));


            //3.创建dest file的对象
            destFile.mkdirs();
//            if(!destFile.exists()){
//                destFile.createNewFile();
//            }
            //4.把inputStream得到的字节信息输出到dest文件中
            BufferedOutputStream bfo = new BufferedOutputStream(new FileOutputStream(destFile));
            byte[] bytes = new byte[1*1024*1024];

            int len=-1;
            while((len=bfr.read(bytes)) > -1){
                bfo.write(bytes);
            }

            //5.关闭流

            bfr.close();
            bfo.close();
        }


    }























    //
//    public static void copyFile(File file,File fileOut){
//        //字节数组的读
//        try {
//            FileInputStream fis = new FileInputStream(file);
//            //根据文件的字节长度创建字节数组
//            byte[] buf = new byte[(int)(file.length())];
//            fis.read(buf);  //读取文件中的数据存放到字节数组
//
//            if(!fileOut.exists()){
//                fileOut.createNewFile();
//            }
//
//            FileOutputStream fos = new FileOutputStream(fileOut,true);
//
//            //将字节数组中包含的数据一次性写入到文件中
//            fos.write(buf);
//
//
//
//            fis.close();     //关闭流
//            fos.close();
//        } catch (FileNotFoundException fnfe) {
//            System.out.println("文件打开失败。");
//        } catch (IOException ioe) {
//            ioe.printStackTrace();
//        }
//
//    }
}
